<?php


namespace app\back\controller;


use app\back\model\TemplateModel;
use app\middleware\BackAuth;
use think\facade\Validate;
use app\Request;
use think\response\Json;
use think\validate\ValidateRule;

/**模板管理
 * Class Template
 * @package app\back\controller
 */
class Template
{
    protected $middleware = [BackAuth::class];
    /**添加模板
     * @param Request $request
     * @return Json
     */
    public function add(Request $request)
    {
        // 获取参数
        $input['name'] = $request->post('name');
        $input['supplier_per'] = $request->post('supplier_per');
        $input['center_per'] = $request->post('center_per');
        $input['community_per'] = $request->post('community_per');
        $input['sup_to_cen_per'] = $request->post('sup_to_cen_per');
        $input['cen_to_com_per'] = $request->post('cen_to_com_per');
        // 参数校验
        $validate = Validate::rule([
            'name' => function($value, $all) {
                $sum = $all['cen_to_com_per'] + $all['center_per'] + $all['community_per'] + $all['sup_to_cen_per'] + $all['supplier_per'];
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $sum<=0 || $sum >= 100) {
                    return '所有百分比之和大于0小于100';
                } else {
                    return true;
                }
            },
            'supplier_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '农村合作社百分比大于0小于100';
                } else {
                    return true;
                }
            },
            'center_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '分拣中心百分比大于0小于100';
                } else {
                    return true;
                }
            },
            'community_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '社区百分比大于0小于100';
                } else {
                    return true;
                }
            },
            'sup_to_cen_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '合作社到分拣中心运输百分比大于0小于100';
                } else {
                    return true;
                }
            },
            'cen_to_com_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '分拣中心到社区运输百分比大于0小于100';
                } else {
                    return true;
                }
            },
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return TemplateModel::add($input,$request->info);
    }

    /**获取模板列表
     * @param Request $request
     * @return Json
     */
    public function lst(Request $request)
    {
        // 获取参数
        $input['limit'] = $request->post('limit');
        $input['page'] = $request->post('page');
        $input['name'] = $request->post('name');
        $input['status'] = $request->post('status');
        // 参数校验
        $validate = Validate::rule([
            'limit' => ValidateRule::isRequire(null, '缺少参数'),
            'page' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => function($value) {
                return $value === null ? '缺少参数' : true ;
            },
            'status' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ($value === '') {
                    return true;
                } elseif ($value == 1 || $value == 2) {
                    return true;
                } else {
                    return '非法数据';
                }
            }
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return TemplateModel::lst($input,$request->info);
    }

    /**删除模板
     * @param Request $request
     * @return Json
     */
    public function delete(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return TemplateModel::delete($input,$request->info);
    }

    /**修改状态
     * @param Request $request
     * @return Json
     */
    public function changeStatus(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['status'] = $request->post('status');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'status' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ($value == 1 || $value == 2) {
                    return true;
                } else {
                    return '非法数据';
                }
            }
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return TemplateModel::changeStatus($input,$request->info);
    }

    /**获取单个模板信息
     * @param Request $request
     * @return Json
     */
    public function getOnly(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return TemplateModel::getOnly($input,$request->info);
    }

    /**编辑模板信息
     * @param Request $request
     * @return Json
     */
    public function edit(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['name'] = $request->post('name');
        $input['supplier_per'] = $request->post('supplier_per');
        $input['center_per'] = $request->post('center_per');
        $input['community_per'] = $request->post('community_per');
        $input['sup_to_cen_per'] = $request->post('sup_to_cen_per');
        $input['cen_to_com_per'] = $request->post('cen_to_com_per');
        // 参数校验
        $validate = Validate::rule([
            'name' => function($value, $all) {
                $sum = $all['cen_to_com_per'] + $all['center_per'] + $all['community_per'] + $all['sup_to_cen_per'] + $all['supplier_per'];
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $sum<=0 || $sum >= 100) {
                    return '所有百分比之和大于0小于100';
                } else {
                    return true;
                }
            },
            'supplier_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '农村合作社百分比大于0小于100';
                } else {
                    return true;
                }
            },
            'center_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '分拣中心百分比大于0小于100';
                } else {
                    return true;
                }
            },
            'community_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '社区百分比大于0小于100';
                } else {
                    return true;
                }
            },
            'sup_to_cen_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '合作社到分拣中心运输百分比大于0小于100';
                } else {
                    return true;
                }
            },
            'cen_to_com_per' => function($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ( $value < 0 || $value >= 100) {
                    return '分拣中心到社区运输百分比大于0小于100';
                } else {
                    return true;
                }
            },
            'id' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return TemplateModel::edit($input,$request->info);
    }
}